home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / snmp / mib2c-data / node-set.m2i < prev    next >
Text File  |  2008-09-22  |  8KB  |  237 lines

  1. #############################################################  -*- c -*-
  2. ## generic include for XXX. Do not use directly.
  3. ##
  4. ## $Id: node-set.m2i 11991 2005-03-04 20:10:14Z rstory $
  5. ########################################################################
  6. @if $m2c_mark_boundary == 1@
  7. /** START code generated by $RCSfile$ $Revision: 11991 $ */
  8. @end@
  9. ########################################################################
  10. ##
  11. ##----------------------------------------------------------------------
  12. /**
  13.  * Check that the proposed new value is potentially valid.
  14.  *
  15.  * @param rowreq_ctx
  16.  *        Pointer to the row request context.
  17.  * @param $m2c_node_param_val_name
  18.  *        A $node.decl containing the new value.
  19. @    if $m2c_node_needlength == 1@
  20.  * @param $m2c_node_param_val_lname
  21.  *        The size (in bytes) of the data pointed to by $m2c_node_param_val_name
  22. @    end@
  23.  *
  24.  * @retval MFD_SUCCESS        : incoming value is legal
  25.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  26.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  27.  *
  28.  * This is the place to check for requirements that are not
  29.  * expressed in the mib syntax (for example, a requirement that
  30.  * is detailed in the description for an object).
  31.  *
  32. @if ("$m2c_data_context" ne "generated") && ($m2c_node_needlength == 1)@
  33.  * Since you aren't using a generated data context, you also need to
  34.  * check the length, to make sure you don't overflow your storage space.
  35.  *
  36. @end@
  37.  * You should check that the requested change between the undo value and the
  38.  * new value is legal (ie, the transistion from one value to another
  39.  * is legal).
  40.  *      
  41.  *@note
  42.  * This check is only to determine if the new value
  43.  * is \b potentially valid. This is the first check of many, and
  44.  * is one of the simplest ones.
  45.  * 
  46.  *@note
  47.  * this is not the place to do any checks for values
  48.  * which depend on some other value in the mib. Those
  49.  * types of checks should be done in the
  50.  * ${context}_check_dependencies() function.
  51.  *
  52.  * The following checks have already been done for you:
  53.  *    The syntax is $node.type
  54. @if ("$m2c_data_context" eq "generated") && ($m2c_node_needlength == 1)@
  55.  *    The length is < sizeof($m2c_data_item$node).
  56. @end@
  57. @if $node.enums == 1@
  58.  *    The value is one of $m2c_evals
  59. @elsif $node.ranges == 1@
  60. @    if ("$node.decl" eq "long") || ("$node.decl" eq "u_long")@
  61. @        eval $m2c_tmp_ns = "value"@
  62. @    else@
  63. @        eval $m2c_tmp_ns = "length"@
  64. @    end@
  65.  *    The $m2c_tmp_ns is in (one of) the range set(s): $m2c_evals
  66. @end@
  67.  *
  68.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  69.  *
  70. @  if $mfd_code_verbose == 1@
  71. @    if ("$node.decl" eq "long") || ("$node.decl" eq "u_long")@
  72.  * For example, an object with the syntax INTEGER(0..500) will
  73.  * have already been checked for a value between 0 and 500. But
  74.  * if the description also specifies that the value must be an
  75.  * even number, you would enforce that requirement here. If and odd
  76.  * numer is set, return MFD_NOT_VALID_EVER. If the description also
  77.  * specified that changed must be made in single steps of 2, then a set
  78.  * to change the value 10 to an even value other than 8 or 12 should
  79.  * return MFD_NOT_VALID_NOW.
  80. @    else@
  81.  * For example, and object with the syntax DisplayString(0..40)
  82.  * will have already been checked for a length between 0 and 40.
  83.  * But if the description also specified that the value must
  84.  * be all uppercase letters, you would enforce that requirement here
  85.  * by returning MFD_NOT_VALID_EVER for a set containing lowercase
  86.  * letters. If the description also specified that the value can not
  87.  * change by more than one letter at a time, an attempt to change
  88.  * "ABBY" to "ANNIE" should return MFD_NOT_VALID_NOW.
  89. @    end@
  90.  *
  91. @  end@
  92.  */
  93. int
  94. ${node}_check_value( ${context}_rowreq_ctx *rowreq_ctx, $m2c_node_param_val)
  95. {
  96.     DEBUGMSGTL(("verbose:${context}:${node}_check_value","called\n"));
  97.  
  98.     /** should never get a NULL pointer */
  99.     netsnmp_assert(NULL != rowreq_ctx);
  100. @if $m2c_node_needlength == 1@
  101.     netsnmp_assert(NULL != $m2c_node_param_val_name);
  102. @end@
  103.  
  104.     /*
  105.      * TODO:441:o: |-> Check for valid $node value.
  106.      */
  107.  
  108.     return MFD_SUCCESS; /* $node value not illegal */
  109. } /* ${node}_check_value */
  110.  
  111. ##----------------------------------------------------------------------
  112. /**
  113.  * Save old value information
  114.  *
  115.  * @param rowreq_ctx
  116.  *        Pointer to the table context (${context}_rowreq_ctx)
  117.  *
  118.  * @retval MFD_SUCCESS : success
  119.  * @retval MFD_ERROR   : error. set will fail.
  120.  *
  121.  * This function will be called after the table level undo setup function
  122.  * ${context}_undo_setup has been called.
  123.  *
  124.  *@note
  125.  * this function will only be called if a new value is set for this column.
  126.  *
  127.  * If there is any setup specific to a particular column (e.g. allocating
  128.  * memory for a string), you should do that setup in this function, so it
  129.  * won't be done unless it is necessary.
  130.  */
  131. int
  132. ${node}_undo_setup( ${context}_rowreq_ctx *rowreq_ctx)
  133. {
  134.     DEBUGMSGTL(("verbose:${context}:${node}_undo_setup","called\n"));
  135.  
  136. @ifconf syntax-$node.syntax-undo-setup.m2i@
  137. @    include syntax-$node.syntax-undo-setup.m2i@
  138. @else@
  139.     /** should never get a NULL pointer */
  140.     netsnmp_assert(NULL != rowreq_ctx);
  141.  
  142.     /*
  143.      * TODO:455:o: |-> Setup $node undo.
  144.      */
  145. @   eval $m2c_ctx_lh = "${m2c_undo_item}${node}"@
  146. @   eval $m2c_ctx_lhs = "${m2c_undo_item}${node}_len"@
  147. @   eval $m2c_ctx_rh = "${m2c_data_item}${node}"@
  148. @   eval $m2c_ctx_rhs = "${m2c_data_item}${node}_len"@
  149. @   include generic-ctx-copy.m2i@
  150. @end@
  151.  
  152.     return MFD_SUCCESS;
  153. } /* ${node}_undo_setup */
  154.  
  155. ##----------------------------------------------------------------------
  156. /**
  157.  * Set the new value.
  158.  *
  159. @if $m2c_node_set_comments ne ""@
  160. $m2c_node_set_comments
  161. *
  162. @end@
  163.  * @param rowreq_ctx
  164.  *        Pointer to the users context. You should know how to
  165.  *        manipulate the value from this object.
  166.  * @param $m2c_node_param_val_name
  167.  *        A $node.decl containing the new value.
  168. @    if $m2c_node_needlength == 1@
  169.  * @param $m2c_node_param_val_lname
  170.  *        The size (in bytes) of the data pointed to by $m2c_node_param_val_name
  171. @    end@
  172.  */
  173. int
  174. ${node}_set( ${context}_rowreq_ctx *rowreq_ctx, $m2c_node_param_val )
  175. {
  176. @ifconf syntax-$node.syntax-set.m2i@
  177. @    include syntax-$node.syntax-set.m2i@
  178. @else@
  179.  
  180.     DEBUGMSGTL(("verbose:${context}:${node}_set","called\n"));
  181.  
  182.     /** should never get a NULL pointer */
  183.     netsnmp_assert(NULL != rowreq_ctx);
  184. @if $m2c_node_needlength == 1@
  185.     netsnmp_assert(NULL != $m2c_node_param_val_name);
  186. @end@
  187.  
  188. @    if $m2c_node_skip_mapping != 1@
  189. @        include generic-value-map-reverse.m2i@
  190. @    else@
  191. @        include generic-ctx-set.m2i@
  192. @    end@
  193. @end@ # no syntax include
  194.     return MFD_SUCCESS;
  195. } /* ${node}_set */
  196.  
  197. ##----------------------------------------------------------------------
  198. /**
  199.  * undo the previous set.
  200.  *
  201. @if $m2c_node_undo_comments ne ""@
  202. $m2c_node_undo_comments
  203. *
  204. @end@
  205.  * @param rowreq_ctx
  206.  *        Pointer to the users context.
  207.  */
  208. int
  209. ${node}_undo( ${context}_rowreq_ctx *rowreq_ctx)
  210. {
  211. @ifconf syntax-$node.syntax-undo.m2i@
  212. @    include syntax-$node.syntax-undo.m2i@
  213. @else@
  214.  
  215.     DEBUGMSGTL(("verbose:${context}:${node}_undo","called\n"));
  216.  
  217.     netsnmp_assert(NULL != rowreq_ctx);
  218.  
  219.     /*
  220.      * TODO:456:o: |-> Clean up $node undo.
  221.      */
  222. @   eval $m2c_ctx_rh = "${m2c_undo_item}${node}"@
  223. @   eval $m2c_ctx_rhs = "${m2c_undo_item}${node}_len"@
  224. @   eval $m2c_ctx_lh = "${m2c_data_item}${node}"@
  225. @   eval $m2c_ctx_lhs = "${m2c_data_item}${node}_len"@
  226. @   include generic-ctx-copy.m2i@
  227. @end@ # no syntax include
  228.     
  229.     return MFD_SUCCESS;
  230. } /* ${node}_undo */
  231.  
  232. ##
  233. ########################################################################
  234. @if $m2c_mark_boundary == 1@
  235. /** END code generated by $RCSfile$ $Revision: 11991 $ */
  236. @end@
  237.